# -*- coding: utf-8 -*-

import debug

class CamBase(object):
	'''
	カメラプラグインの基底クラス
	'''
	@debug.notoverrided
	def __init__(self, config):
		if config is None:
			return None
		self.config = config
		return

        def __unsupported_response(self):
            return {'Success':False, 'Response':None, 'Message':'Not override method'}
	
	@debug.notoverrided
	def connect(self):
		'''
		フレームワークからカメラに接続する
		return:
			Success: True/False
			Responce: OK/None
			Message: OK/NG
		'''
		return self.__unsupported_response()
	
	@debug.notoverrided
	def disconnect(self):
		'''
		IPカメラとの接続を破棄する
		return: 
			Success: True/False
			Responce: OK/None
			Message: OK/NG
		'''
		return self.__unsupported_response()

	@debug.notoverrided
	def getCamStatus(self):
		'''
		IPカメラの接続状態を取得する
		return:
			Success:True/False
			Response: OK/None
			Message: OK/Bad Response
		'''
		return self.__unsupported_response()

	@debug.notoverrided
	def getIPAdder(self):
		'''
		IPカメラのIPアドレスを取得
		return: 
			Success: True/False
			Responce: IPアドレス(IPv4形式, 文字列)/None
			Message: OK/Bad Response
		'''
		return self.__unsupported_response()
	
	@debug.notoverrided
	def getMACAdder(self):
		'''
		IPカメラのMACアドレスを取得
		return: 
			Success: True/False
			Responce: MACアドレス(文字列)/None
			Message: OK/Bad Response
		'''
		return self.__unsupported_response()
	
	@debug.notoverrided
	def getHTTPport(self):
		'''
		IPカメラのHTTPポートを取得
		return: 
			Success: True/False
			Responce: HTTPポート番号(整数値, デフォルトは80)/None
			Message: OK/Bad Response
		'''
		return self.__unsupported_response()

	@debug.notoverrided
	def setHTTPport(self, ports):
		'''
		IPカメラのHTTPポート番号を設定
		ports: ポート番号(1～65536の整数値)
		return:
			Success: True/False
			Responce: OK/None
			Message: OK/Bad Response/Bad Parameter
		'''
		return self.__unsupported_response()
	
	@debug.notoverrided
	def getHTTPSport(self):
		'''
		IPカメラのHTTPSポートを取得
		return: 
			Success: True/False
			Responce: HTTPSポート番号(整数値, デフォルトは443)/None
			Message: OK/Bad Response
		'''
		return self.__unsupported_response()
	
	@debug.notoverrided
	def setHTTPSport(self, ports):
		'''
		IPカメラのHTTPSポート番号を設定
		ports: ポート番号(1～65536の整数値)
		return:
			Success: True/False
			Responce: OK/None
			Message: OK/Bad Response/Bad Parameter
		'''
		return self.__unsupported_response()
	
	@debug.notoverrided
	def getFormatList(self):
		'''
		ビデオフォーマットリストを取得
		return: 
			Success: True
			Responce: ビデオフォーマットリスト(N個の文字列)
	        Message: OK
		'''
		return self.__unsupported_response()
	
	@debug.notoverrided
	def getVideoFormat(self):
		'''
		現在のビデオフォーマットを取得
		return: 
			Success: True/False
			Responce: 現在のビデオフォーマット(文字列)/None
			Message: OK/Bad Response
		'''
		return self.__unsupported_response()
	
	@debug.notoverrided
	def setVideoFormat(self, vformat):
		'''
		IPカメラのビデオフォーマットを変更する
		vformat: 変更したいビデオフォーマット(文字列)
			ex.) H.264, MPEG4, MJPEG
		return: 
			Success: True/False
			Responce: OK/None
			Message: OK/Bad Response/Bad Parameter
		'''
		return self.__unsupported_response()
	
	@debug.notoverrided
	def getBrightness(self):
		'''
		IPカメラから現在の明るさを取得する
		return:
			Success: True/False
			Responce: 現在の明るさ(文字列)/None
			Message: OK/Bad Response
		'''
		return self.__unsupported_response()
	
	@debug.notoverrided
	def getBrightnessList(self):
		'''
		設定可能な明るさリストを取得する
		return: 
			Success: True
			Responce: 明るさリスト(N個のリスト)
			Message: OK
		'''
		return self.__unsupported_response()
	
	@debug.notoverrided
	def setBrightness(self, brightness):
		'''
		IPカメラの明るさを変更する
		brightness: 変更したい明るさ(文字列)
			ex.) Highest, High, Normal, Low, Lowest
		return:
			Succcess: True/False
			Responce: OK/None
			Message: OK/Bad Response/Bad Parameter
		'''
		return self.__unsupported_response()
		
	@debug.notoverrided
	def getSaturation(self):
		'''
		IPカメラの現在の彩度を取得する
		return:
			Success: True/false
			Responce: 現在の彩度(文字列)/None
			Message: OK/Bad Response
		'''
		return self.__unsupported_response()
	
	@debug.notoverrided
	def setSaturation(self, saturation):
		'''
		IPカメラの彩度を変更する
		saturation: 変更したい彩度(文字列)
			ex.) Highest, High, Normal, Low, Lowest
		return: 
			Success: True/False
			Responce: OK/None
			Message: OK/Bad Response/Bad Parameter
		'''
		return self.__unsupported_response()
	
	@debug.notoverrided
	def getSaturationList(self):
		'''
		IPカメラで設定できる彩度のリストを取得する
		return: 
			Success: True
			Responce: 彩度リスト(N個のリスト)
			Message: OK
		'''
		return self.__unsupported_response()
	
	@debug.notoverrided
	def getContrast(self):
		'''
		IPカメラから現在のコントラストを取得する
		return:
			Success: True/False
			Responce: 現在のコントラスト(文字列)/None
			Message: OK/Bad Response
		'''
		return self.__unsupported_response()
	
	@debug.notoverrided
	def setContrast(self, contrast):
		'''
		IPカメラのコントラストを変更する
		contrast: 変更したいコントラスト(文字列)
			ex.) Highest, High, Normal, Low, Lowest
		return:
			Success: True/False
			Responce: OK/None
			Message: OK/Bad Response/Bad Parameter
		'''
		return self.__unsupported_response()
	
	@debug.notoverrided
	def getContrastList(self):
		'''
		IPカメラで設定できるコントラストのリストを取得する
		 return: 
		 	Success: True
		 	Responce: コントラストリスト(N個のリスト)
		 	Message: OK
		'''
		return self.__unsupported_response()
	
	@debug.notoverrided
	def getResolution(self):
		'''
		IPカメラの現在の解像度を取得する
		return:
			Success: True/False
			Responce: 現在の解像度(文字列)/None
			Message: OK/Bad Response
		'''
		return self.__unsupported_response()
	
	@debug.notoverrided
	def setResolution(self, resolution):
		'''
		IPカメラの解像度を変更する
		resolution: 変更したい解像度(文字列)
			ex.) 640*480, 320*240, 160*120
		return:
			Success: True/False
			Responce: OK/None
			Message: OK/Bad Response/Bad Parameter
		'''
		return self.__unsupported_response()
	
	@debug.notoverrided
	def getResolutionList(self):
		'''
		IPカメラに設定できる解像度のリストを取得する
		return: 
			Success: True
			Responce: 解像度リスト(N個のリスト)
			Message: OK
		'''
		return self.__unsupported_response()
	
	@debug.notoverrided
	def getQuality(self):
		'''
		現在の動画品質を取得する
		return:
			Success: True/False
			Responce: 現在の動画品質(文字列)/None
			Message: OK/Bad Response
		'''
		return self.__unsupported_response()
	
	@debug.notoverrided
	def setQuality(self, quality):
		'''
		動画品質の変更を行う
		quality: 変更したい動画品質
			ex.) Highest, High, Normal, Low, Lowest
		return:
			Success: True/False
			Responce: OK/None
			Message: OK/Bad Response/Bad Parameter
		'''
		return self.__unsupported_response()
	
	@debug.notoverrided
	def getQualityList(self):
		'''
		IPカメラに設定できる動画品質のリストを取得する
		return:
			Success: True
			Responce: 動画品質リスト(N個のリスト)
			Message: OK
		'''
		return self.__unsupported_response()
	
	@debug.notoverrided
	def getFps(self):
		'''
		現在のフレームレートを取得する
		return: 
			Success: True/False
			Responce: フレームレート(整数値)/None
			Message: OK/Bad Response
		'''
		return self.__unsupported_response()
	
	@debug.notoverrided
	def setFps(self, fps):
		'''
		フレームレートの変更を行う
		fps: 変更したいフレームレート(整数値)
			ex.) 5, 10, 15 ...
		return:
			Success: True/False
			Responce: OK/None
			Message: OK/Bad Response/Bad Parameter
		'''
		return self.__unsupported_response()
	
	@debug.notoverrided
	def getFpsList(self):
		'''
		IPカメラに設定できるフレームレートのリストを取得する
		return: 
			Success: True
			Responce: フレームレートリスト(N個のリスト)
			Message:OK
		'''
		return self.__unsupported_response()
	
	@debug.notoverrided
	def getLogs(self):
		'''
		IPカメラ自身のログを取得する
		return:
			Success: True/False
			Responce: ログの実体/None
			Message: OK/Bad Response
		'''
		return self.__unsupported_response()
	
	@debug.notoverrided
	def getSnapshot(self):
		'''
		IPカメラから静止画を取得する
		return:
			Success: True/False
			Responce: 画像データ(バイナリ, JPEG)/None
			Message: OK/Bad Response
		'''
		return self.__unsupported_response()
	
	@debug.notoverrided
	def startMovieCapture(self, target, storage):
		'''
		IPカメラで動画キャプチャを開始する
		target: 撮影対象となるカメラのコンフィグ名
			ex.) cam1, cam2, cam3 ...
		storage: 保存するストレージクラス
		return: 
			Success: True/False
			Responce: OK/None
			Message: OK/NG
		'''
		return self.__unsupported_response()
	
	@debug.notoverrided
	def endMovieCapture(self):
		'''
		IPカメラの動画キャプチャを終了させる
		return:
			Success: True/False
			Responce: OK/None
			Message: OK/None
		'''
		return self.__unsupported_response()


	@debug.notoverrided
	def startAudioCapture(self, target, storage):
		'''
		IPカメラで音声キャプチャを開始する
		target: 撮影対象となるカメラのコンフィグ名
			ex.) cam1, cam2, cam3 ...
		storage: 保存するストレージクラス
		return: 
			Success: True/False
			Responce: OK/None
			Message: OK/NG
		'''
		return self.__unsupported_response()
	
	@debug.notoverrided
	def endAudioCapture(self):
		'''
		IPカメラの音声キャプチャを終了させる
		return:
			Success: True/False
			Responce: OK/None
			Message: OK/None
		'''
		return self.__unsupported_response()

